package models;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author eagle_eye
 */
@Entity
@Table(name = "PROFESOR", catalog = "sischool2", schema = "")
@NamedQueries({
    @NamedQuery(name = "Profesor.findAll", query = "SELECT p FROM Profesor p"),
    @NamedQuery(name = "Profesor.findByIdProfesor", query = "SELECT p FROM Profesor p WHERE p.idProfesor = :idProfesor"),
    @NamedQuery(name = "Profesor.findByDocprofesor", query = "SELECT p FROM Profesor p WHERE p.docprofesor = :docprofesor"),
    @NamedQuery(name = "Profesor.findByNombresprofesor", query = "SELECT p FROM Profesor p WHERE p.nombresprofesor = :nombresprofesor"),
    @NamedQuery(name = "Profesor.findByApellidosprofesor", query = "SELECT p FROM Profesor p WHERE p.apellidosprofesor = :apellidosprofesor"),
    @NamedQuery(name = "Profesor.findByEspecialidad", query = "SELECT p FROM Profesor p WHERE p.especialidad = :especialidad"),
    @NamedQuery(name = "Profesor.findByEdadprof", query = "SELECT p FROM Profesor p WHERE p.edadprof = :edadprof"),
    @NamedQuery(name = "Profesor.findByGeneroprof", query = "SELECT p FROM Profesor p WHERE p.generoprof = :generoprof"),
    @NamedQuery(name = "Profesor.findByDireccionprof", query = "SELECT p FROM Profesor p WHERE p.direccionprof = :direccionprof"),
    @NamedQuery(name = "Profesor.findByFechanacimientoprof", query = "SELECT p FROM Profesor p WHERE p.fechanacimientoprof = :fechanacimientoprof")})
public class Profesor implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idProfesor", nullable = false)
    private Integer idProfesor;
    @Basic(optional = false)
    @Column(name = "docprofesor", nullable = false, length = 45)
    private String docprofesor;
    @Basic(optional = false)
    @Column(name = "nombresprofesor", nullable = false, length = 45)
    private String nombresprofesor;
    @Basic(optional = false)
    @Column(name = "apellidosprofesor", nullable = false, length = 45)
    private String apellidosprofesor;
    @Basic(optional = false)
    @Column(name = "especialidad", nullable = false, length = 45)
    private String especialidad;
    @Column(name = "edadprof")
    private Integer edadprof;
    @Column(name = "generoprof", length = 10)
    private String generoprof;
    @Column(name = "direccionprof", length = 45)
    private String direccionprof;
    @Column(name = "fechanacimientoprof", length = 32)
    private String fechanacimientoprof;
    @JoinColumn(name = "asignaturaId", referencedColumnName = "idAsignatura")
    @ManyToOne
    private Asignatura asignaturaId;
    @JoinColumn(name = "usuarioId", referencedColumnName = "idUsuario")
    @ManyToOne
    private Usuario usuarioId;
    @JoinColumn(name = "telefonosId", referencedColumnName = "idTelefonos", nullable = false)
    @ManyToOne(optional = false)
    private Telefonos telefonosId;
    @OneToMany(mappedBy = "profesorId")
    private List<Curso> cursoList;

    public Profesor() {
    }

    public Profesor(Integer idProfesor) {
        this.idProfesor = idProfesor;
    }

    public Profesor(Integer idProfesor, String docprofesor, String nombresprofesor, String apellidosprofesor, String especialidad) {
        this.idProfesor = idProfesor;
        this.docprofesor = docprofesor;
        this.nombresprofesor = nombresprofesor;
        this.apellidosprofesor = apellidosprofesor;
        this.especialidad = especialidad;
    }

    public Integer getIdProfesor() {
        return idProfesor;
    }

    public void setIdProfesor(Integer idProfesor) {
        this.idProfesor = idProfesor;
    }

    public String getDocprofesor() {
        return docprofesor;
    }

    public void setDocprofesor(String docprofesor) {
        this.docprofesor = docprofesor;
    }

    public String getNombresprofesor() {
        return nombresprofesor;
    }

    public void setNombresprofesor(String nombresprofesor) {
        this.nombresprofesor = nombresprofesor;
    }

    public String getApellidosprofesor() {
        return apellidosprofesor;
    }

    public void setApellidosprofesor(String apellidosprofesor) {
        this.apellidosprofesor = apellidosprofesor;
    }

    public String getEspecialidad() {
        return especialidad;
    }

    public void setEspecialidad(String especialidad) {
        this.especialidad = especialidad;
    }

    public Integer getEdadprof() {
        return edadprof;
    }

    public void setEdadprof(Integer edadprof) {
        this.edadprof = edadprof;
    }

    public String getGeneroprof() {
        return generoprof;
    }

    public void setGeneroprof(String generoprof) {
        this.generoprof = generoprof;
    }

    public String getDireccionprof() {
        return direccionprof;
    }

    public void setDireccionprof(String direccionprof) {
        this.direccionprof = direccionprof;
    }

    public String getFechanacimientoprof() {
        return fechanacimientoprof;
    }

    public void setFechanacimientoprof(String fechanacimientoprof) {
        this.fechanacimientoprof = fechanacimientoprof;
    }

    public Asignatura getAsignaturaId() {
        return asignaturaId;
    }

    public void setAsignaturaId(Asignatura asignaturaId) {
        this.asignaturaId = asignaturaId;
    }

    public Usuario getUsuarioId() {
        return usuarioId;
    }

    public void setUsuarioId(Usuario usuarioId) {
        this.usuarioId = usuarioId;
    }

    public Telefonos getTelefonosId() {
        return telefonosId;
    }

    public void setTelefonosId(Telefonos telefonosId) {
        this.telefonosId = telefonosId;
    }

    public List<Curso> getCursoList() {
        return cursoList;
    }

    public void setCursoList(List<Curso> cursoList) {
        this.cursoList = cursoList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idProfesor != null ? idProfesor.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Profesor)) {
            return false;
        }
        Profesor other = (Profesor) object;
        if ((this.idProfesor == null && other.idProfesor != null) || (this.idProfesor != null && !this.idProfesor.equals(other.idProfesor))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "models.Profesor[idProfesor=" + idProfesor + "]";
    }

}
